package org.fengling.readingplatform.manager.mapper;

import org.apache.ibatis.annotations.Mapper;

import org.fengling.readingplatform.model.entity.novel.Chapter;
import org.fengling.readingplatform.model.entity.novel.ChapterUpdateInfo;
import org.fengling.readingplatform.model.vo.novel.ChapterVo;

import java.util.List;

@Mapper
public interface ChapterMapper {
    // 章节添加方法
    void save(Chapter chapter);

    // 章节获取方法
    Chapter getChapter(Long novelId, Long chapterId);

    // 章节删除的方法
    void deleteChapter(Long novelId, Long chapterId);

    // 修改前驱结点
    void changePrevChapter(Long novelId, Long chapterId, Long nextChapterId);

    // 修改后继结点
    void changeNextChapter(Long novelId, Long chapterId, Long prevChapterId);

    // 查询符合要求的章节列表
    List<ChapterVo> getChapterList(Long novelId, Integer isDeleted);

    // 改变章节状态的方式
    void changeStatus(Long novelId, Long chapterId, Integer isDeleted);

    // 获取章节最新信息的方式
    ChapterUpdateInfo getLatestChapterInfo(Long novelId);

    // 更新章节的信息
    void renewChapter(Long novelId, Long latestChapterId, Long latestSortId);

    // 修改章节排序大于sortValue的章节的章节排序
    void changeSortValue(Long novelId, Long sortValue, Long offset);

    // 根绝小说标号和排序标号来查找原先该位置的节点
    Long findChapterId(Long novelId, Long sortValue);

    // 删除章节的方式
    void delete(Long novelId, Long chapterId);

    // 查询是否存在该章节
    Integer count(Long novelId, Long chapterId);

    // 更新章节的方式
    void update(Chapter chapter);
}
